package com.docmgmt.mvp.mapper;

import com.docmgmt.mvp.entity.FileVersionEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * <p>
 * 文件版本表（v3.0新增version_type支持3种版本类型） Mapper 接口
 * </p>
 *
 * @author Dora
 */
@Mapper
public interface FileVersionMapper extends BaseMapper<FileVersionEntity> {

    /**
     * 查询文件的所有版本（按版本号降序）
     *
     * @param fileId 文件ID
     * @return 版本列表
     */
    @Select("SELECT * FROM doc_file_version WHERE file_id = #{fileId} ORDER BY version DESC")
    List<FileVersionEntity> listVersionsByFileId(@Param("fileId") Long fileId);

    /**
     * 查询文件的最新版本号
     *
     * @param fileId 文件ID
     * @return 最新版本号
     */
    @Select("SELECT COALESCE(MAX(version), 0) FROM doc_file_version WHERE file_id = #{fileId}")
    Integer getLatestVersionNumber(@Param("fileId") Long fileId);

    /**
     * 根据文件ID和版本号查询版本
     *
     * @param fileId  文件ID
     * @param version 版本号
     * @return 版本实体
     */
    @Select("SELECT * FROM doc_file_version WHERE file_id = #{fileId} AND version = #{version}")
    FileVersionEntity getByFileIdAndVersion(@Param("fileId") Long fileId, @Param("version") Integer version);
}
